        std::list<MessagePtr> gc()
        {

            //-------------------------
            bool ret;
            std::list<MessagePtr> result;
            //1.加载出文件中所有的有效数据
            ret = load(result);
            if (ret == false)
            {
                DLOG("加载有效数据失败！\n");
                return result;
            }
            // DLOG("垃圾回收，得到有效消息数量：%d", result.size());
            // 2. 将有效数据，进行序列化存储到临时文件中
            FileHelper::createFile(_tmpfile);
            for (auto &msg : result)
            {
                DLOG("向临时文件写入数据: %s", msg->payload().body().c_str());
                ret = insert(_tmpfile, msg);
                if (ret == false)
                {
                    DLOG("向临时文件写入消息数据失败！！");
                    return result;
                }
            }
            // DLOG("垃圾回收后，向临时文件写入数据完毕，临时文件大小: %ld", FileHelper(_tmpfile).size());
            // 3. 删除源文件
            ret = FileHelper::removeFile(_datafile);
            if (ret == false) 
            {
                DLOG("删除源文件失败！");
                return result;
            }
            // 4. 修改临时文件名，为源文件名称
            ret = FileHelper(_tmpfile).rename(_datafile);
            if (ret == false)
            {
                DLOG("修改临时文件名称失败！");
                return result;
            }
            // 5. 返回新的有效数据
            return result;
        }